#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
批量创建日期文件夹脚本
作者：BensonZhag
创建日期：2025
功能：允许用户选择目录和多个日期，并创建对应格式的文件夹
"""

import os
import tkinter as tk
from tkinter import filedialog, messagebox
from tkcalendar import Calendar
from datetime import datetime
import locale

class FolderCreator:
    def __init__(self):
        # 设置中文语言环境
        try:
            locale.setlocale(locale.LC_ALL, 'zh_CN.UTF-8')
        except:
            # 如果中文环境设置失败，使用系统默认环境
            pass
        
        # 创建主窗口
        self.root = tk.Tk()
        self.root.title("日期文件夹创建器")
        self.root.geometry("400x500")
        
        # 存储选择的目录
        self.selected_dir = None
        
        # 创建界面元素
        self.create_widgets()
        
        # 存储选择的日期
        self.selected_dates = set()
        
    def create_widgets(self):
        # 选择目录按钮
        self.dir_button = tk.Button(
            self.root,
            text="选择目录",
            command=self.select_directory
        )
        self.dir_button.pack(pady=10)
        
        # 显示选择的目录
        self.dir_label = tk.Label(self.root, text="未选择目录")
        self.dir_label.pack(pady=5)
        
        # 创建日历控件
        self.cal = Calendar(
            self.root,
            selectmode='day',
            year=2025,
            month=3,
            day=1,
            locale='zh_CN'
        )
        self.cal.pack(pady=10)
        
        # 选择日期按钮
        self.select_date_button = tk.Button(
            self.root,
            text="选择日期",
            command=self.select_date
        )
        self.select_date_button.pack(pady=5)
        
        # 显示已选择的日期
        self.dates_label = tk.Label(self.root, text="已选择的日期：")
        self.dates_label.pack(pady=5)
        
        # 创建文件夹按钮
        self.create_button = tk.Button(
            self.root,
            text="创建文件夹",
            command=self.create_folders
        )
        self.create_button.pack(pady=10)
        
    def select_directory(self):
        """选择目录"""
        self.selected_dir = filedialog.askdirectory()
        if self.selected_dir:
            self.dir_label.config(text=f"已选择目录：{self.selected_dir}")
            
    def select_date(self):
        """选择日期"""
        selected_date = self.cal.get_date()
        if selected_date:
            self.selected_dates.add(selected_date)
            self.update_dates_label()
            
    def update_dates_label(self):
        """更新已选择日期显示"""
        dates_text = "已选择的日期：\n" + "\n".join(sorted(self.selected_dates))
        self.dates_label.config(text=dates_text)
        
    def create_folders(self):
        """创建文件夹"""
        if not self.selected_dir:
            messagebox.showerror("错误", "请先选择目录！")
            return
            
        if not self.selected_dates:
            messagebox.showerror("错误", "请至少选择一个日期！")
            return
            
        try:
            for date_str in self.selected_dates:
                # 将日期字符串转换为datetime对象
                # 修改格式以匹配tkcalendar返回的格式 (YYYY/MM/DD)
                date_obj = datetime.strptime(date_str, '%Y/%m/%d')
                # 创建文件夹名称（格式：YYYYMMDD）
                folder_name = date_obj.strftime('%Y%m%d')
                folder_path = os.path.join(self.selected_dir, folder_name)
                
                # 创建文件夹
                if not os.path.exists(folder_path):
                    os.makedirs(folder_path)
                    
            messagebox.showinfo("成功", "文件夹创建完成！")
            self.selected_dates.clear()
            self.update_dates_label()
            
        except Exception as e:
            messagebox.showerror("错误", f"创建文件夹时出错：{str(e)}")
            
    def run(self):
        """运行程序"""
        self.root.mainloop()

if __name__ == "__main__":
    app = FolderCreator()
    app.run() 